from django.http import HttpResponse
from django.shortcuts import render


# Create your views here.

def set_cookie(request):
    response = HttpResponse('set_cookie')
    response.set_cookie('name', 'zhangsan', 10)
    response.set_cookie('age', '18')
    return response


def get_cookie(request):
    # 从 request.COOKIES中 获取cookie的数据, COOKIES 这个变量是一个字典
    cookie_data = request.COOKIES  # {'name': 'zhangsan'}
    name = cookie_data.get('name')
    print(name)
    return HttpResponse(name)


def set_session(request):
    # 使用  python manage.py migrate  命令 创建 保存session内容的数据表
    # 通过request.session[key] 来设置session的内容
    # session 是一个字典
    request.session['name'] = 'zhangsan'
    request.session['age'] = '18'
    return HttpResponse('set_session')


def get_session(request):
    # 通过request.session.get 来获取session的内容
    # session 是一个字典
    name = request.session.get('name')
    age = request.session.get('age')
    return HttpResponse('get_session name:%s, age:%s' % (name,age))


#删除session三种操作
# session ->  {'name':'zhangsan', 'age':'18'}
# 1. 删除一个键  比如删除 name
# del session['name']
# session.pop('name')

# 2. 清空session的内容
# session.clear()
# session  ->  {}  ->  数据库里还有session的记录

# 3. 删除session本身
# session.flush()
# session ->  None   -> 数据库里session的记录也删除了

def del_session(request):
    request.session.pop('name')
    # del request.session['name']

    return HttpResponse('del session')

def clear_session(request):
    request.session.clear()

    return HttpResponse('clear session')

def flush_session(request):
    request.session.flush()

    return HttpResponse('flush session')

"""
设置session的有效期

request.session.set_expiry(value)
如果value是一个整数，session将在value秒没有活动后过期。
如果value为0，那么用户sessionid的Cookie将在用户的浏览器关闭时过期。
如果value为None，那么session有效期将采用系统默认值，默认为两周，可以通过在settings.py中设置SESSION_COOKIE_AGE来设置全局默认值。"""

def set_expiry(request):
    # request.session.set_expiry(0)  # 浏览器关闭, sessionid就过期
    # request.session.set_expiry(None)  # 使用系统默认过期时间, 如果不修改, 就是两周,  注意: 括号里的  None 必须写
    request.session.set_expiry(20)  # 20秒后session过期

    return HttpResponse('set session expiry')